package com.gubei.oss.service;

import com.gubei.oss.entity.FileInfo;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;
import java.util.List;

/**
 * ファイルservice
 */
public interface StorageService {

    /**
     * bucket筒を創建
     */
    void createBucket(String bucket);

    /**
     * ファイルをアップロード
     */
    void uploadFile(MultipartFile uploadFile, String bucket, String objectName);

    /**
     * すべてbucket筒を獲得
     */
    List<String> getAllBuckets();

    /**
     *  今のbucket筒とファイルを獲得
     */
    List<FileInfo> getAllFiles(String bucket);

    /**
     * ファイルをダウンロード
     */
    InputStream downloadFile(String bucket, String objectName);

    /**
     * bucket筒を削除
     */
    void deleteBucket(String bucket);

    /**
     * ファイルを削除
     */
    void deleteObject(String bucket, String objectName);

    /**
     * ファイルURLを獲得
     */
    String getUrl(String bucket, String objectName);
}
